<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>简介</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="book.bcompiler.html">bcompiler</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="bcompiler.setup.html">安装／配置</a></div>
 <div class="up"><a href="book.bcompiler.html">bcompiler</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="intro.bcompiler" class="preface">
   <h1 class="title">简介</h1>
   <div class="warning"><strong class="warning">Warning</strong><p class="simpara">此扩展是<em class="emphasis">实验性 </em>的。
此扩展的表象，包括其函数名称以及其他此扩展的相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本扩展风险自担 。</p></div>
    <p class="para">
     Bcompiler 由于以下若干原因而写成：
     <ul class="simplelist">
      <li class="member">在一个专有的 PHP 应用程序里对整个脚本进行编码</li>
      <li class="member">在一个专有的 PHP 应用程序里对一些类或者函数进行编码</li>
      <li class="member">
          使生产环境中的 php-gtk 产品应用于桌面客户端，而无需 php.exe。
      </li>
      <li class="member">PHP 到 C 转换器的可行性研究</li>
     </ul>
     这些目标的第一个是通过使用函数
     <span class="function"><a href="function.bcompiler-write-header.html" class="function">bcompiler_write_header()</a></span>、
     <span class="function"><a href="function.bcompiler-write-file.html" class="function">bcompiler_write_file()</a></span> 和
     <span class="function"><a href="function.bcompiler-write-footer.html" class="function">bcompiler_write_footer()</a></span>
     实现的。
     字节码文件可以以未压缩的或简单的格式写入。
      The bytecode files can
     be written as either uncompressed or plain.
     使用生成的字节码，你可以简单使用 include 或者 require  语句来包含。
    </p>
    <p class="para">
     这些目标的第二个可以使用
     <span class="function"><a href="function.bcompiler-write-header.html" class="function">bcompiler_write_header()</a></span>、
     <span class="function"><a href="function.bcompiler-write-class.html" class="function">bcompiler_write_class()</a></span>、
     <span class="function"><a href="function.bcompiler-write-footer.html" class="function">bcompiler_write_footer()</a></span>、
     <span class="function"><a href="function.bcompiler-read.html" class="function">bcompiler_read()</a></span>
     和 <span class="function"><a href="function.bcompiler-load.html" class="function">bcompiler_load()</a></span> 函数实现。
     字节码文件可以以未压缩的或简单的格式写入。
     <span class="function"><a href="function.bcompiler-load.html" class="function">bcompiler_load()</a></span> 读取了一个 bzip 压缩过的字节码文件，体积往往是原始文件的 1/3。
    </p>
    <p class="para">
     为了创建可执行的文件，bcompiler 要使用一个修改过的 sapi 文件或者已经被编译为共享库的一个版本的 PHP。
     在这个方案里，bcompiler 从可执行文件的末尾读取了压缩过的字节码。
    </p>
    <p class="para">
     在仅使用未压缩过的字节码时，bcompiler 能够提高约 30% 的性能。
     但是请留意未压缩过的字节码可能比源码大5倍
     使用字节码压缩可以节省您的磁盘空间，但解压需要比解析源码花费更多时间。
     同时 bcompiler 没有对字节码做任何优化，这功能会在将来添加……
    </p>
    <p class="para">
     在代码保护方面，有把握地讲，不可能重新创建确切的原始代码，并且没有附加的源码注释。
     它将有效得阻止了重建和修改一个类。但是它可以从 bcompile 过的字节码中取出数据
     ——所以不要把你私人密码或者其他任何类似东西放在里面。
    </p>
 </div><hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="book.bcompiler.html">bcompiler</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="bcompiler.setup.html">安装／配置</a></div>
 <div class="up"><a href="book.bcompiler.html">bcompiler</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>
